XcodeでSwiftのコンパイルにかかる時間を調査する方法を調べてみた
swiftを使ったiOSプロジェクトでコンパイルにかかる時間を調査する方法を調べたのでその報告。
概要
XcodeでiOSアプリを開発していると、プロジェクト後半になるにつれて、徐々にビルド時間が伸びていて時々、チーム内でも議論されていました。まずは、どの部分で時間がかかっているか
を調べてみようと思います。なので今回は、XcodeでiOSアプリを開発する時に、コンパイルにかかる時間を調べる方法をご紹介します。
環境
- Xcode: Version 9.4(9F1027a)
- macOS: 10.13.5
やり方
Xcodeの Other Swift Flags
に以下のパラメータを追加します。すると、設定時間以上にコンパイルに時間がかかる箇所が、warningとして表示されるようになります
-Xfrontend -warn-long-expression-type-checking=100 -Xfrontend -warn-long-function-bodies=100
数字の部分はms単位ですので、適宜変更して下さい。入力した後の状態は以下のようになります。図ではわかりやすくするために、3msに設定しています
パラメータについて
-warn-long-expression-type-checking=100
は、型推論に100ms以上かかる箇所を警告で表示します。-warn-long-function-bodies=100
は、コンパイルに100ms以上かかるメソッドを警告で表示します。
結果
以下のように表示されるようになります。(設定は3msにしてあります。)